/*********************************************************************
* Created by Mercury Interactive Windows Sockets Recorder.
*
* Created on: Thu Jun 10 15:23:49
*********************************************************************/

#include "lrs.h"
//定义函数中使用的结构体
struct InData
{
    char*        pcXml;
    int            lenXml;
};

struct InData a;


struct OutData
{
    int            nFlags;
    char        *pcXml;
    int            lenXml;
    char        *pcTime;
    int            lenTime;
};
struct OutData b;

//赋值，为函数传值

//char *bufxx = "<?xml version = \"1.0\" encoding = \"utf-8\"?><message-body>\r\n<head>hean</head>\r\n<unit>3</unit>\r\n<user>Administrator</user>\r\n<request>2</request>\r\n<time>{hosttime}</time>\r\n</message-body>\r\n40739CBFFF1DBBE5011585EAB90EB4572C74C60D";

Action()
{

int i=0;
int k;
//定义在接受服务器返回信息的循环的次数
int j=5;
//定义变量 截取字符串
char  tempstr2[30];
//定义截取字符串的接受变量
char *myboot;

char *time;
char *beginbuf="<?xml version = \"1.0\" encoding = \"utf-8\"?><message-body>\r\n<head>hean</head>\r\n<unit>6</unit>\r\n<user>Administrator</user>\r\n<request>";
char *centerbuf="</request>\r\n<time>";
char *endbuf="</time>\r\n</message-body>\r\n40739CBFFF1DBBE5011585EAB90EB4572C74C60D";
char buf[1204];
char *request="2";
time = lr_eval_string("{hosttime}");
sprintf(buf, "%s%s%s%s%s",beginbuf,request,centerbuf,time,endbuf);
lr_output_message("组合后的字符串是：：： %s", buf);

    //调用需要的dll文件，dll文件在loadrunner安装的bin目录下
    lr_load_dll("HAIceDll.dll");

    //为结构体赋值
    a.pcXml = buf;
    a.lenXml = strlen(buf);
    b.nFlags = -1;


    //插入开始事务
    lr_start_transaction("请求策略");
    //调用函数

        i=0;
        do {
        HMSACLientSendMsg(&a,&b,"192.168.1.186","8000");
        lr_message("函数的返回值是：%s",b.pcXml);
            myboot=b.pcXml;
        //for的循环的作用是截取获得得服务器返回数据，截取7个字符，判定接受的数据
        for (k=1;k<7;k++)
           {
           myboot++;
           }
        //lr_output_message( "在接受服务器返回请求数据中-收到的包的内容是：：%s",b.pcXml);
        strncpy(tempstr2,myboot,7);
        lr_output_message( "在接受服务器返回请求数据中-截取的几个字符串是：%s",tempstr2);
        i++;

        //显示该循环体循环的次数
        lr_output_message("现在循环的次数是：%d",i);
  } while (strstr(tempstr2,"version") == NULL&&i<j);

  if (strstr(tempstr2,"version") == NULL)
      lr_error_message("请求错误，失败！");


  //结束事务标志
    lr_end_transaction("请求策略", LR_AUTO);
  

//清空占用的内存
HMSAClientClean(&a,&b);

//定义休息时间，单位：毫秒，即：1s=1000ms
//sleep(2000);

    return 0;
}